const express = require('express')
const router = express.Router()
const controller = require('../controllers/userController')
const { validateRegister, validateLogin, validateUpdate } = require('../middleware/validate')
const auth = require('../middleware/auth')

// 导入 multer 和 path
const multer = require('multer')
const path = require('path')

// 配置 multer 存储
const storage = multer.diskStorage({
	destination: (req, file, cb) => {
		cb(null, path.join(__dirname, '../uploads')) // 指定头像存储目录
	},
	filename: (req, file, cb) => {
		const ext = path.extname(file.originalname) // 获取文件扩展名
		cb(null, `${Date.now()}${ext}`) // 时间戳 + 原始扩展名的文件名
	}
})
/**
 * 创建 multer 实例
 * req.body 可以获取 form-data 中的文本字段
 * req.file 可以获取上传的文件
 */
const uploads = multer({
	storage,
	limits: { fileSize: 1024 * 1024 }, // 1MB限制
	fileFilter: (req, file, cb) => {
		if (file.mimetype.startsWith('image/')) {
			cb(null, true)
		} else {
			cb(new Error('只允许上传图片文件'), false)
		}
	}
})

// 公共路由
router.post('/register', validateRegister, controller.register)
router.post('/login', validateLogin, controller.login)

// 需要认证的路由
router.get('/user', auth, controller.getUser)
router.put('/user', auth, uploads.single('avatar'), validateUpdate, controller.updateUser)
router.delete('/user', auth, controller.deleteUser)

module.exports = router
